package com.cmc.cloud.cmclink.doc.api.document.req.so.sovo.sovo;

import com.cmes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.time.LocalDateTime;

import static com.cmes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
import static com.cmes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
 * 订舱主分页 Request VO
 *
 * @author codegen
 */
@Schema(description = "管理后台 - 订舱主分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class SoPageReqVO extends PageParam {

    @Schema(description = "订舱号")
    private String bookingNo;

    @Schema(description = "提单号 规则")
    private String blNo;

    @Schema(description = "客户参考号")
    private String referenceNo;

    @Schema(description = "订舱船名 line 第一段")
    private String bookingVessel;

    @Schema(description = "订舱航次 line 第一段")
    private String bookingVoyage;

    @Schema(description = "router Id", example = "18841")
    private Long routeId;

    @Schema(description = "路径描述", example = "你说的对")
    private String routeDescription;

    @Schema(description = "第一个liner段的POL设置为current pol")
    private String currentPort;

    @Schema(description = "接货地")
    private String porCode;

    @Schema(description = "装货港")
    private String polCode;

    @Schema(description = "卸货港")
    private String podCode;

    @Schema(description = "目的地")
    private String delCode;

    @Schema(description = "订舱人代码")
    private String bookingParty;

    @Schema(description = "一级代理代码")
    private String topAgent;

    @Schema(description = "箱状态", example = "2")
    private String cntrStatus;

    @Schema(description = "箱主代码")
    private String cntrOwner;

    @Schema(description = "舱位代码")
    private String spaceOwner;

    @Schema(description = "约号")
    private String agreementNo;

    @Schema(description = "运输条款")
    private String shippingTerm;

    @Schema(description = "so 通知邮箱 多个")
    private String soNotityEmails;

    @Schema(description = "si 通知邮箱 多个")
    private String siNotityEmails;

    @Schema(description = "订舱状态", example = "2")
    private String[] soStatusList;

    @Schema(description = "SO内容审核状态 Pending待审核 Approved审核通过 Rejected拒绝 Pending For Material Uploaded待客户补充资料", example = "1")
    private String soContentStatus;

    @Schema(description = "新加-SO内容审核状态多选", example = "1")
    private String[] soContentStatusList;

    @Schema(description = "数据来源 网厅web 、edi、api、手动manual、")
    private String dataSource;

    @Schema(description = "拆分来源 正常 normal 拆分 split 合并 combine")
    private String splitCombine;

    @Schema(description = "订舱时间 Start")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDate bookingTimeStart;

    @Schema(description = "订舱时间 End")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDate bookingTimeEnd;

    @Schema(description = "创建时间 Start")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDate createTimeStart;

    @Schema(description = "创建时间 End")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDate createTimeEnd;
    @Schema(description = "订舱备注", example = "你说的对")
    private String bookingRemark;

    @Schema(description = "审批流 id", example = "22055")
    private Long processInstanceId;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

    @Schema(description = "特种货审核状态 改关联ID，查询其他表状态", example = "31816")
    private Long specialCargoAuditId;

    @Schema(description = "创建人")
    private String creator;

    @Schema(description = "订舱号维度，0 审批通过后修改审批中 只有一个 不显示 （审批通过后，当前变为1)；1 有效  默认1 正常显示；-1 无效  旧审批通过变为-1，再审批不通过也改为-1 不显示；", example = "1")
    private Integer validStatus;

    @Schema(description = "批舱状态")
    private String[] spaceStatusList;

    @Schema(description = "审批后修改状态")
    private String[] soAmendStatusList;

    @Schema(description = "不查询web的草稿件,web的草稿件不完整")
    private Boolean noQueryWebDraft;
}

